﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace App_Persistencia
{
    public class Bebida_Data
    {
        int id;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        string nombre;
        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        string unidad_Medida;
        public string Unidad_Medida
        {
            get { return unidad_Medida; }
            set { unidad_Medida = value; }
        }
        float precio;
        public float Precio
        {
            get { return precio; }
            set { precio = value; }
        }
        string descripcion;

        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }

        private float cantEstimadaPorPersona;

        public float CantEstimadaPorPersona
        {
            get { return cantEstimadaPorPersona; }
            set { cantEstimadaPorPersona = value; }
        }

        public DataTable popularBebidas()
        {
            //Creo la sentencia SQL
            string commandSQL = "SELECT beb_Id, beb_Nombre, beb_UnidadMedida, beb_Precio, beb_Descripcion FROM Bebida";

            // Creo el Objeto DataAdapter y le paso la cadena al constructor y la sentencia SQL
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, conexion);

            // Creo el Objeto DataSet
            DataSet dataSet = new DataSet();

            // Relleno el Objeto DataSet
            dataAdapter.Fill(dataSet, "Bebida");

            //creo la vista de la consulta
            DataView dataView = new DataView();

            //Cargo la Vista con el contenido de la tabla de resultados
            dataView = dataSet.Tables["Bebida"].DefaultView;

            // Obtengo la tabla del DataSet
            DataTable dataTable = dataSet.Tables["Bebida"];

            return dataTable;
        }

        public void buscarUnaBebida()
        {
            // Crear el Objeto de conexion, inicializa con la cadena de conexion
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            System.Data.SqlClient.SqlConnection connection = new SqlConnection(conexion);

            // Abro la conexion
            connection.Open();

            //Invoco al Objeto SqlTransaction para manejar la transaccion  
            //ejecuto la transaccion
            //SqlTransaction transaccion = connection.BeginTransaction(); ;

            try
            {
                // Creo el Objeto Command, le asigno la conexion y el Procediminto a utilizar
                System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
                //Asigno a la propiedad Transaction del Objeto SqlCommand el valor del Objeto SqlTransaction
                //command.Transaction = transaccion;
                //Asingo la conexion al objeto conection
                command.Connection = connection;
                command.CommandText = "spBuscarUnaBebida";
                command.CommandType = CommandType.StoredProcedure;

                // Declaro el Objeto de parametro
                System.Data.SqlClient.SqlParameter param;

                // Establesco el parametro @SocId, uso como entrada los atributos de la clase
                param = command.Parameters.AddWithValue("@BebId", id);
                param.DbType = DbType.Int32;
                param.Direction = ParameterDirection.Input;

                //// Establesco el parametro @SocDenom                
                //param = command.Parameters.AddWithValue("@BebNombre", nombre);
                //param.DbType = DbType.String;
                //param.Size = 50;
                //param.Direction = ParameterDirection.Output;

                //// Establesco el parametro @SocDNI
                param = command.Parameters.AddWithValue("@BebPrecio", 0);
                param.DbType = DbType.Double;
                param.Direction = ParameterDirection.Output;

                //// Establesco el parametro @SocDNI
                param = command.Parameters.AddWithValue("@BebCantEstimada", 0);
                param.DbType = DbType.Double;
                param.Direction = ParameterDirection.Output;

                // Ejecuto el procedimiento
                command.ExecuteNonQuery();

                //recupero el valor del parametro @UsuarioId
                //usuarioId = Convert.ToInt32(command.Parameters["@UsuarioId"].Value);
                precio = float.Parse(command.Parameters["@BebPrecio"].Value.ToString());
                CantEstimadaPorPersona= float.Parse(command.Parameters["@BebCantEstimada"].Value.ToString());

            }
            catch (Exception e)
            {
                //si se produjo algun error lo capturo y ejecuto el Rollback de la transaccion
                //transaccion.Rollback();
                //provoco una Exepcion para la capa superior
                System.Diagnostics.Trace.Write(e.Message);
                throw new ApplicationException();
            }
            finally
            {
                //Si termino la carga correctamente cierro la conexion
                connection.Close();
            }
        }

        public DataTable buscarBebidasPorPresupuesto(int idPresupuesto)
        {
            string commandSQL = "SELECT Bebida.beb_Id AS BebidaId, Bebida.beb_Nombre AS Nombre, Bebida.beb_UnidadMedida AS UnidadMedida, Bebida.beb_Precio AS Precio, Bebida.beb_Descripcion as Descripcion "
                                + " FROM Bebida INNER JOIN "
                                + " PresupuestoxBebida ON Bebida.beb_Id = PresupuestoxBebida.bebida_Id ";
            if (id != -1)
            {
                StringBuilder s = new StringBuilder(commandSQL);
                s.Append(" WHERE (PresupuestoxBebida.presupuesto_Id = " + idPresupuesto.ToString() + ")");
                commandSQL = s.ToString();
            }
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, new SqlConnection(conexion));
            DataSet dataSet = new DataSet();
            dataAdapter.Fill(dataSet, "Bebida");
            DataTable dataTable = dataSet.Tables["Bebida"];
            return dataTable;
        }

    }
}
